The ACPI specification is a computer architecture-related standard developed to establish industry common interfaces for enabling robust operating system (OS)-directed motherboard device configuration and power management of both devices and entire platforms. The ACPI specification evolves the existing collection of power management BIOS code, Advanced Power Management (APM) Application Program Interfaces (APIs), Plug and Play Basic Input/Output System (PNPBIOS) APIs, and Multiprocessor Specification (MPS) tables, into a well-defined, integrated power management and configuration interface specification. From a manufacturing and implementation perspective, the ACPI specification enables different computer platforms to implement common motherboard configuration and power management functions. From a power management perspective, it promotes the concept that platforms should conserve energy by transitioning unused devices into lower power states. For example, computer platforms employing ACPI-compatible implementations are able to optimize processor clock speed, control motherboard and peripheral device power consumption, and place an entire computer platform into a low-power or sleeping state.
Centralizing power management and related directives in the OS has made it practical and compelling for computer hardware implementations to support and exploit ACPI-defined interfaces. In general, to implement ACPI-defined interfaces and take advantage of the functionality offered by them, the ACPI-related modules are first systematically initialized and utilized by the OS via an ACPI namespace which provides a hierarchical tree structure in OS-controlled memory that contains named objects relating to hardware implementation and configuration details. In particular, during bootload, the OS accesses the ACPI namespace to load ACPI-hardware implementations. Similarly, during the operation of the computer platform, user space applications and kernel space applications implement ACPI-defined interfaces by accessing objects, such as package objects, control method objects, data objects, bus objects, and device objects, for example, in the ACPI namespace.
The existing ACPI architecture, however, is not without limitations. As the ACPI specification continues to become more accepted, the number of ACPI-compatible implementations continues to grow and the functionality of existing ACPI-implementations continues to increase. Accordingly, the number of objects in the ACPI namespace and the size of the ACPI namespace continues to expand. During hardware initialization and operation, the ACPI namespace is traversed to access a named object to initialize or utilize, respectively, a particular ACPI-compatible implementation. Due to the increasing size of the ACPI namespace, accessing named objects in the ACPI namespace for the initialization or operation of ACPI-compatible implementations consumes an increasing amount of system resources.